// 4.1 简单工厂模式
// . 简单工程模式是由一个工厂对象决定创建出哪一种产品类的实例

// 4.2 工厂方法模式 Factory Method 又称多态性工厂模式
// 4.2 在工厂方法模式中，核心的工厂类不再负责所有的产品的创建，而是将具体创建的工作交给工厂子类去做。

// 4.3抽象工厂模式
// 抽象工厂模式可以向客户端提供一个接口，使客户端不必指定产品的具体的情况下，创建多个产品族中的产品对象
// 工厂方法模式针对的是同一类或同等级产品，而抽象工厂模式针对的是多种类的产品设计
// 系统中有多个产品族，每个具体工厂负责创建同一族但属于不同产品等级（产品种类）的产品
// 产品族是一组相关或相互依赖的对象
// 系统一次只能消费某一组产品，即相同产品族的产品是一起被使用的
// 当系统需要新增一个产品族时，只需要增加心的工厂类即可，无需修改源代码；但是如果需要产品族中增加一个新种类的产品时，则所有的工厂类都需要修改

// 4.3.1 组成角色
// 抽象工厂：提供了创建产品的接口，包含多个创建产品的方法，即包含多个类似创建产品的方法
// 具体工厂：实现抽象工厂定义的接口，完成某个具体产品的创建
// 抽象产品：抽象产品定义，一般有多少抽象产品，抽象工厂中就包含多少个创建产品的方法
// 具体产品：抽象产品的实现类
